home *** CD-ROM | disk | FTP | other *** search
/ Cre@te Online 2000 December / Cre@teOnline CD05.iso / MacSoft / XML Authority.sea / XML Authority / Required / ldapjdk.jar / netscape / ldap / util / DN.class (.txt) < prev    next >
Encoding:
Java Class File  |  1999-04-13  |  3.3 KB  |  244 lines

  1. package netscape.ldap.util;
  2.  
  3. import java.util.StringTokenizer;
  4. import java.util.Vector;
  5.  
  6. // $FF: renamed from: netscape.ldap.util.DN
  7. public final class class_0 {
  8.    Vector m_rdns = new Vector();
  9.    public static int RFC;
  10.    public static int OSF = 1;
  11.    private int m_dnType;
  12.    public static final char[] ESCAPED_CHAR = new char[]{',', '+', '"', '\\', ';'};
  13.  
  14.    public class_0() {
  15.       this.m_dnType = RFC;
  16.    }
  17.  
  18.    public class_0(String var1) {
  19.       this.m_dnType = RFC;
  20.       if (var1 != null) {
  21.          if (this.isRFC(var1)) {
  22.             StringBuffer var2 = new StringBuffer(var1);
  23.             int var3 = 0;
  24.             StringBuffer var4 = new StringBuffer();
  25.  
  26.             boolean var5;
  27.             for(var5 = false; var3 < var2.length(); ++var3) {
  28.                var4.append(var2.charAt(var3));
  29.                if (var2.charAt(var3) == '\\') {
  30.                   char var6 = var2.charAt(var3 + 1);
  31.  
  32.                   for(int var7 = 0; var7 < ESCAPED_CHAR.length; ++var7) {
  33.                      if (var6 == ESCAPED_CHAR[var7]) {
  34.                         ++var3;
  35.                         var4.append(var2.charAt(var3));
  36.                         break;
  37.                      }
  38.                   }
  39.                } else if (var2.charAt(var3) == '"') {
  40.                   if (var5) {
  41.                      var5 = false;
  42.                   } else {
  43.                      var5 = true;
  44.                   }
  45.                } else if (var2.charAt(var3) == ',' && !var5) {
  46.                   var4.setLength(var4.length() - 1);
  47.                   if (!this.appendRDN(var4)) {
  48.                      return;
  49.                   }
  50.  
  51.                   var4 = new StringBuffer();
  52.                }
  53.             }
  54.  
  55.             if (var5) {
  56.                this.m_rdns.removeAllElements();
  57.                return;
  58.             }
  59.  
  60.             if (!this.appendRDN(var4)) {
  61.                return;
  62.             }
  63.          } else {
  64.             if (var1.indexOf(47) != -1) {
  65.                this.m_dnType = OSF;
  66.                StringTokenizer var8 = new StringTokenizer(var1, "/");
  67.                Vector var9 = new Vector();
  68.  
  69.                while(var8.hasMoreTokens()) {
  70.                   String var10 = var8.nextToken();
  71.                   if (!RDN.isRDN(var10)) {
  72.                      return;
  73.                   }
  74.  
  75.                   var9.addElement(new RDN(var10));
  76.                }
  77.  
  78.                for(int var11 = var9.size() - 1; var11 >= 0; --var11) {
  79.                   this.m_rdns.addElement(var9.elementAt(var11));
  80.                }
  81.  
  82.                return;
  83.             }
  84.  
  85.             if (RDN.isRDN(var1)) {
  86.                this.m_rdns.addElement(new RDN(var1));
  87.             }
  88.          }
  89.  
  90.       }
  91.    }
  92.  
  93.    public void addRDNToFront(RDN var1) {
  94.       this.m_rdns.insertElementAt(var1, 0);
  95.    }
  96.  
  97.    public void addRDNToBack(RDN var1) {
  98.       this.m_rdns.addElement(var1);
  99.    }
  100.  
  101.    public void addRDN(RDN var1) {
  102.       if (this.m_dnType == RFC) {
  103.          this.m_rdns.insertElementAt(var1, 0);
  104.       } else {
  105.          this.m_rdns.addElement(var1);
  106.       }
  107.    }
  108.  
  109.    public void setDNType(int var1) {
  110.       this.m_dnType = var1;
  111.    }
  112.  
  113.    public int getDNType() {
  114.       return this.m_dnType;
  115.    }
  116.  
  117.    public int countRDNs() {
  118.       return this.m_rdns.size();
  119.    }
  120.  
  121.    public Vector getRDNs() {
  122.       return this.m_rdns;
  123.    }
  124.  
  125.    public String[] explodeDN(boolean var1) {
  126.       if (this.m_rdns.size() == 0) {
  127.          return null;
  128.       } else {
  129.          String[] var2 = new String[this.m_rdns.size()];
  130.  
  131.          for(int var3 = 0; var3 < this.m_rdns.size(); ++var3) {
  132.             if (var1) {
  133.                RDN var4 = (RDN)this.m_rdns.elementAt(var3);
  134.                var2[var3] = var4.m_value;
  135.             } else {
  136.                var2[var3] = ((RDN)this.m_rdns.elementAt(var3)).toString();
  137.             }
  138.          }
  139.  
  140.          return var2;
  141.       }
  142.    }
  143.  
  144.    public boolean isRFC() {
  145.       return this.m_dnType == RFC;
  146.    }
  147.  
  148.    public String toRFCString() {
  149.       String var1 = "";
  150.  
  151.       for(int var2 = 0; var2 < this.m_rdns.size(); ++var2) {
  152.          if (var2 != 0) {
  153.             var1 = var1 + ",";
  154.          }
  155.  
  156.          var1 = var1 + ((RDN)this.m_rdns.elementAt(var2)).toString();
  157.       }
  158.  
  159.       return var1;
  160.    }
  161.  
  162.    public String toOSFString() {
  163.       String var1 = "";
  164.  
  165.       for(int var2 = 0; var2 < this.m_rdns.size(); ++var2) {
  166.          if (var2 != 0) {
  167.             var1 = "/" + var1;
  168.          }
  169.  
  170.          RDN var3 = (RDN)this.m_rdns.elementAt(var2);
  171.          var1 = var3.toString() + var1;
  172.       }
  173.  
  174.       return var1;
  175.    }
  176.  
  177.    public String toString() {
  178.       return this.m_dnType == RFC ? this.toRFCString() : this.toOSFString();
  179.    }
  180.  
  181.    public static boolean isDN(String var0) {
  182.       class_0 var1 = new class_0(var0);
  183.       return var1.m_rdns.size() > 0;
  184.    }
  185.  
  186.    public boolean equals(class_0 var1) {
  187.       return var1.toRFCString().toUpperCase().equals(this.toRFCString().toUpperCase());
  188.    }
  189.  
  190.    public class_0 getParent() {
  191.       class_0 var1 = new class_0();
  192.  
  193.       for(int var2 = this.m_rdns.size() - 1; var2 > 0; --var2) {
  194.          RDN var3 = (RDN)this.m_rdns.elementAt(var2);
  195.          if (var1.m_dnType == RFC) {
  196.             var1.m_rdns.insertElementAt(var3, 0);
  197.          } else {
  198.             var1.m_rdns.addElement(var3);
  199.          }
  200.       }
  201.  
  202.       return var1;
  203.    }
  204.  
  205.    public boolean contains(class_0 var1) {
  206.       Vector var2 = var1.m_rdns;
  207.       Vector var3 = this.m_rdns;
  208.       int var4 = var2.size() - 1;
  209.  
  210.       for(int var5 = var3.size() - 1; var4 >= 0 && var5 >= 0; --var5) {
  211.          RDN var6 = (RDN)var2.elementAt(var4);
  212.          RDN var7 = (RDN)var3.elementAt(var5);
  213.          if (!var7.toString().toUpperCase().equals(var6.toString().toUpperCase())) {
  214.             return false;
  215.          }
  216.  
  217.          --var4;
  218.       }
  219.  
  220.       return true;
  221.    }
  222.  
  223.    private boolean isRFC(String var1) {
  224.       for(int var2 = var1.indexOf(44); var2 > 0 && var2 < var1.length() - 1; var2 = var1.indexOf(44, var2 + 1)) {
  225.          if (var1.charAt(var2 - 1) != '\\') {
  226.             return true;
  227.          }
  228.       }
  229.  
  230.       return false;
  231.    }
  232.  
  233.    private boolean appendRDN(StringBuffer var1) {
  234.       String var2 = new String(var1);
  235.       if (RDN.isRDN(var2)) {
  236.          this.m_rdns.addElement(new RDN(var2));
  237.          return true;
  238.       } else {
  239.          this.m_rdns.removeAllElements();
  240.          return false;
  241.       }
  242.    }
  243. }
  244.